// 统一管理项目中的版本信息
object Versions {
    const val jdk = "1.8"

    const val compileSdk = 31
    const val minSdk = 24
    const val targetSdk = 30

    const val kotlin = "1.5.31"
    const val kotlinStdLib = "kotlin-stdlib-jdk8"

    const val coroutines = "1.3.8"

    const val fragment = "1.2.5"
    const val ktx = "1.3.2"
    const val lifecycle = "2.2.0"
    const val appCompat = "1.3.1"
    const val room = "2.3.0"
    const val navigation = "2.3.2"
    const val paging = "2.1.2"
    const val recyclerView = "1.1.0"
    const val constraintLayout = "2.0.4"
    const val viewPager2 = "1.0.0"
    const val work = "2.5.0-alpha01"

    const val junit = "4.13.2"

    const val material = "1.3.0"
    const val koin = "2.1.6"
    const val jodaTime = "2.10.6"
    const val okhttp3 = "4.9.0"
    const val retrofit2 = "2.9.0"

    const val jackson = "2.10.1"
    const val handlebars = "4.2.0"
    const val multiStateView = "2.1.2"
    const val okio = "2.9.0"
    const val toasty = "1.4.2"
    const val dexter = "6.2.1"
    const val bgaQrcodeZbar = "1.3.8"
    const val croppy = "0.2"
    const val timber = "4.7.1"
    const val blockCanary = "1.5.0"
    const val liveEventBus = "1.7.2"

    const val leakCanary = "2.6"
    const val buglyCrashReport = "latest.release"
    const val buglyNativeCrashReport = "latest.release"
    const val xCrash = "3.0.0"
    const val epic = "0.11.0"
    const val androidXAnnotation = "1.2.0"

    const val dkDialog = "1.0.0-alpha06"
    const val dkTinyPhotoPicker = "1.0.0-alpha07"
    const val dkCamerax = "1.0.0-alpha05"
}

// 统一管理项目中使用的依赖库
object Depends {
    // kotlin
    const val kotlinStdLib = "org.jetbrains.kotlin:${Versions.kotlinStdLib}:${Versions.kotlin}"

    // junit
    const val junit = "junit:junit:${Versions.junit}"
    const val kotlinTestJunit = "org.jetbrains.kotlin:kotlin-test-junit:${Versions.kotlin}"

    // ktx
    const val coreKtx = "androidx.core:core-ktx:${Versions.ktx}"

    // ktx
    const val kotlinReflect = "org.jetbrains.kotlin:kotlin-reflect:${Versions.kotlin}"

    // lifecycle
    const val lifecycleExtensions = "androidx.lifecycle:lifecycle-extensions:${Versions.lifecycle}"
    const val lifecycleLiveDataKtx =
        "androidx.lifecycle:lifecycle-livedata-ktx:${Versions.lifecycle}"
    const val lifecycleViewModelKtx =
        "androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.lifecycle}"

    // fragment
    const val fragmentKtx = "androidx.fragment:fragment-ktx:${Versions.fragment}"

    // coroutines
    const val coroutinesCore =
        "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.coroutines}"
    const val coroutinesAndroid =
        "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.coroutines}"

    // koin
    const val koinScope = "io.insert-koin:koin-androidx-scope:${Versions.koin}"
    const val koinViewModel = "io.insert-koin:koin-androidx-viewmodel:${Versions.koin}"
    const val koinFragment = "io.insert-koin:koin-androidx-fragment:${Versions.koin}"
    const val koinExt = "io.insert-koin:koin-androidx-ext:${Versions.koin}"

    // material
    const val material = "com.google.android.material:material:${Versions.material}"

    // appcompat
    const val appcompat = "androidx.appcompat:appcompat:${Versions.appCompat}"

    // constraint layout
    const val constraintLayout =
        "androidx.constraintlayout:constraintlayout:${Versions.constraintLayout}"

    // room
    const val roomRuntime = "androidx.room:room-runtime:${Versions.room}"
    const val roomKtx = "androidx.room:room-ktx:${Versions.room}"
    const val roomCompiler = "androidx.room:room-compiler:${Versions.room}"

    // timber
    const val timber = "com.jakewharton.timber:timber:${Versions.timber}"

    // croppy
    const val croppy = "com.github.lyrebirdstudio:Croppy:${Versions.croppy}"

    // bga qrcode zbar
//    const val bgaQrcodeZbar = "cn.bingoogolapple:bga-qrcode-zbar:${Versions.bgaQrcodeZbar}"
    const val bgaQrcodeZbar = "com.github.bingoogolapple.BGAQRCode-Android:zbar:${Versions.bgaQrcodeZbar}"

    // Toasty
    const val toasty = "com.github.GrenderG:Toasty:${Versions.toasty}"

    // Dexter for permission
    const val dexter = "com.karumi:dexter:${Versions.dexter}"

    // okio
    const val okio = "com.squareup.okio:okio:${Versions.okio}"

    // MultiStateView
    const val multiStateView = "com.github.Kennyc1012:MultiStateView:${Versions.multiStateView}"

    // dk
    const val dkDialog = "com.github.dakingx:dk-dialog:${Versions.dkDialog}"
    const val dkTinyPhotoPicker =
        "com.github.CraftsmanHyj:dk-tiny-photo-picker:${Versions.dkTinyPhotoPicker}"
    const val dkCamerax = "com.github.CraftsmanHyj:dk-camerax:${Versions.dkCamerax}"

    // jodaTime
    const val jodaTime = "joda-time:joda-time:${Versions.jodaTime}"

    // handlebars
    const val handlebars = "com.github.jknack:handlebars:${Versions.handlebars}"

    // jackson
    const val jacksonDatabind = "com.fasterxml.jackson.core:jackson-databind:${Versions.jackson}"

    // navigation
    const val navigationFragmentKtx =
        "androidx.navigation:navigation-fragment-ktx:${Versions.navigation}"
    const val navigationUiKtx = "androidx.navigation:navigation-ui-ktx:${Versions.navigation}"

    // paging
    const val paging = "androidx.paging:paging-runtime-ktx:${Versions.paging}"

    // recyclerview
    const val recyclerView = "androidx.recyclerview:recyclerview:${Versions.recyclerView}"

    // viewpager2
    const val viewPager2 = "androidx.viewpager2:viewpager2:${Versions.viewPager2}"

    // work
    const val workRuntimeKtx = "androidx.work:work-runtime-ktx:${Versions.work}"

    // okhttp3
    const val okhttp3LoggingInterceptor =
        "com.squareup.okhttp3:logging-interceptor:${Versions.okhttp3}"

    // retrofit2
    const val retrofit2 = "com.squareup.retrofit2:retrofit:${Versions.retrofit2}"
    const val retrofit2GsonConverter = "com.squareup.retrofit2:converter-gson:${Versions.retrofit2}"

    // Android Performance Monitor
    const val blockCanary = "com.github.markzhai:blockcanary-android:${Versions.blockCanary}"

    // LiveEventBus
    const val liveEventBus = "com.jeremyliao:live-event-bus-x:${Versions.liveEventBus}"

    // LeakCanary
    const val leakCanary = "com.squareup.leakcanary:leakcanary-android:${Versions.leakCanary}"

    // bugly
    const val buglyCrashReport = "com.tencent.bugly:crashreport:${Versions.buglyCrashReport}"
    const val buglyNativeCrashReport =
        "com.tencent.bugly:nativecrashreport:${Versions.buglyNativeCrashReport}"

    // xCrash
    const val xCrash = "com.iqiyi.xcrash:xcrash-android-lib:${Versions.xCrash}"

    // Epic
    const val epic = "me.weishu:epic:${Versions.epic}"

    const val androidXAnnotation = "androidx.annotation:annotation:${Versions.androidXAnnotation}"
}